// speed_sensor.h
#ifndef SPEED_H
#define SPEED_H

#include "encoder.h"

typedef struct {
    Encoder encoder;
    int32_t last_count;
	int32_t last_micros;
    float rpm;              // 当前转速（转/分钟）
    float rps;              // 当前转/秒
    uint16_t ppr;            // 每转脉冲数（如 1000）
    float interval_sec;     // 采样间隔（秒）
	int8_t speed_updated;   //用于保存mt模式下上个周期是否收到过编码器信号
} SpeedSensor;

// 初始化：传入编码器引脚、PPR、采样间隔（ms）
void speed_init(SpeedSensor *sensor,
                GPIO_PinName  ch_a_pin, GPIO_PinName  ch_b_pin,
                uint16_t ppr,
                uint32_t interval_ms);

// 更新：在定时器中断中调用
void speed_update(SpeedSensor *sensor);

// 获取速度
float speed_get_rpm(SpeedSensor *sensor);
float speed_get_rps(SpeedSensor *sensor);

#endif
